// 导入用来创建路由和确定路由模式的两个方法
import {
    createRouter,
    createWebHistory
} from 'vue-router'

import store from '@/store'

import storage from '@/util/storage'
/**
 * 定义路由信息
 * 
 */
const routes = [
    {
        name:'login',
        path:'/login',
        component: () => import('@/components/login'),
    },
    {
        name:'main',
        path:'/main',
        component: () => import('@/components/main'),
        children:[{
            name: 'user',
            path : '/user',
            component: () => import('@/components/system/user'),
        }]
    }
]

// 创建路由实例并传递 `routes` 配置
// 我们在这里使用 html5 的路由模式，url中不带有#，部署项目的时候需要注意。
const router = createRouter({
    history: createWebHistory(),
    routes, 
})


// 全局的路由守卫
router.beforeEach((to, from) => {
    //每次进行路由切换进行判断有没有登录，没有登录则切换登录，否则放行
    console.log("to"+to)
    console.log("from"+from)
    //1、如果去的是登录页面，就放行
    if(to.name === 'login'){
        return true
    }

    //检查是否登录，这里可以检查token，有token就默认通过,当然这里应该判断的很复杂，简单用session判断下
    if(!store.getters.isLogin){
        //如果没有可能是刷新，去session中查看
        if(!storage.getSessionObject("loginUser")){
            router.push("login")
        }else{
            //如果有的话就去session里面获取，重新存入vuex
            store.dispatch("RECOVERY_USER")
            store.dispatch("GET_INFO");
        }
    }

    return true
})

// 讲路由实例导出
export default router